package br.com.knowledge.persistence.hibernate.entities;

import java.sql.Timestamp;
import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

/**
 * VisItemvisao entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "vis_itemvisao", schema = "public")
public class VisItemvisao implements java.io.Serializable {

	// Fields
	private VisItemvisaoId id;
	private CadVisao cadVisao;
	private FntMetodoobjeto fntMetodoobjeto;
	private CadUsuario cadUsuario;
	private FntMetodofuncaoglobal fntMetodofuncaoglobal;
	private FntMetodoclasse fntMetodoclasse;
	private FntMetodobiblioteca fntMetodobiblioteca;
	private String statusitem;
	private Timestamp dataconclusao;
	private String tipoelemento;

	// Constructors

	/** default constructor */
	public VisItemvisao() {
	}

	/** minimal constructor */
	public VisItemvisao(VisItemvisaoId id, CadVisao cadVisao,
			FntMetodoobjeto fntMetodoobjeto, CadUsuario cadUsuario,
			FntMetodofuncaoglobal fntMetodofuncaoglobal,
			FntMetodoclasse fntMetodoclasse,
			FntMetodobiblioteca fntMetodobiblioteca, String statusitem) {
		this.id = id;
		this.cadVisao = cadVisao;
		this.fntMetodoobjeto = fntMetodoobjeto;
		this.cadUsuario = cadUsuario;
		this.fntMetodofuncaoglobal = fntMetodofuncaoglobal;
		this.fntMetodoclasse = fntMetodoclasse;
		this.fntMetodobiblioteca = fntMetodobiblioteca;
		this.statusitem = statusitem;
	}

	/** full constructor */
	public VisItemvisao(VisItemvisaoId id, CadVisao cadVisao,
			FntMetodoobjeto fntMetodoobjeto, CadUsuario cadUsuario,
			FntMetodofuncaoglobal fntMetodofuncaoglobal,
			FntMetodoclasse fntMetodoclasse,
			FntMetodobiblioteca fntMetodobiblioteca, String statusitem,
			Timestamp dataconclusao, String tipoelemento) {
		this.id = id;
		this.cadVisao = cadVisao;
		this.fntMetodoobjeto = fntMetodoobjeto;
		this.cadUsuario = cadUsuario;
		this.fntMetodofuncaoglobal = fntMetodofuncaoglobal;
		this.fntMetodoclasse = fntMetodoclasse;
		this.fntMetodobiblioteca = fntMetodobiblioteca;
		this.statusitem = statusitem;
		this.dataconclusao = dataconclusao;
		this.tipoelemento = tipoelemento;
	}

	// Property accessors
	@EmbeddedId
	@AttributeOverrides( {
			@AttributeOverride(name = "id", column = @Column(name = "id", nullable = false)),
			@AttributeOverride(name = "cadUsuarioId", column = @Column(name = "cad_usuario_id", nullable = false)),
			@AttributeOverride(name = "cadVisaoId", column = @Column(name = "cad_visao_id", nullable = false)) })
	public VisItemvisaoId getId() {
		return this.id;
	}

	public void setId(VisItemvisaoId id) {
		this.id = id;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "cad_visao_id", nullable = false, insertable = false, updatable = false)
	public CadVisao getCadVisao() {
		return this.cadVisao;
	}

	public void setCadVisao(CadVisao cadVisao) {
		this.cadVisao = cadVisao;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "fnt_metodoobjeto_id", nullable = false)
	public FntMetodoobjeto getFntMetodoobjeto() {
		return this.fntMetodoobjeto;
	}

	public void setFntMetodoobjeto(FntMetodoobjeto fntMetodoobjeto) {
		this.fntMetodoobjeto = fntMetodoobjeto;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "cad_usuario_id", nullable = false, insertable = false, updatable = false)
	public CadUsuario getCadUsuario() {
		return this.cadUsuario;
	}

	public void setCadUsuario(CadUsuario cadUsuario) {
		this.cadUsuario = cadUsuario;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "fnt_metodofuncaoglobal_id", nullable = false)
	public FntMetodofuncaoglobal getFntMetodofuncaoglobal() {
		return this.fntMetodofuncaoglobal;
	}

	public void setFntMetodofuncaoglobal(
			FntMetodofuncaoglobal fntMetodofuncaoglobal) {
		this.fntMetodofuncaoglobal = fntMetodofuncaoglobal;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "fnt_metodoclasse_id", nullable = false)
	public FntMetodoclasse getFntMetodoclasse() {
		return this.fntMetodoclasse;
	}

	public void setFntMetodoclasse(FntMetodoclasse fntMetodoclasse) {
		this.fntMetodoclasse = fntMetodoclasse;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "fnt_metodobiblioteca_id", nullable = false)
	public FntMetodobiblioteca getFntMetodobiblioteca() {
		return this.fntMetodobiblioteca;
	}

	public void setFntMetodobiblioteca(FntMetodobiblioteca fntMetodobiblioteca) {
		this.fntMetodobiblioteca = fntMetodobiblioteca;
	}

	@Column(name = "statusitem", nullable = false, length = 1)
	public String getStatusitem() {
		return this.statusitem;
	}

	public void setStatusitem(String statusitem) {
		this.statusitem = statusitem;
	}

	@Column(name = "dataconclusao", length = 29)
	public Timestamp getDataconclusao() {
		return this.dataconclusao;
	}

	public void setDataconclusao(Timestamp dataconclusao) {
		this.dataconclusao = dataconclusao;
	}

	@Column(name = "tipoelemento", length = 1)
	public String getTipoelemento() {
		return this.tipoelemento;
	}

	public void setTipoelemento(String tipoelemento) {
		this.tipoelemento = tipoelemento;
	}

}